package com.buyouchina.service.product;

import java.util.Date;
import java.util.List;

import com.buyouchina.bean.product.Statistical;
import com.buyouchina.bean.product.Statistical.StatisticalType;
import com.buyouchina.bean.product.Statistical.TongjiAreaType;
import com.buyouchina.service.base.DAO;

public interface StatisticalService extends DAO<Statistical> {

	/**
	 * 按区域id和时间查找统计记录
	 * 
	 * @param provinceid
	 *            区域id
	 * @param date
	 *            时间,date类型
	 * 
	 * */
	public List<Statistical> find(Integer provinceid, Date date);

	/**
	 * 按时间查找统计记录当日数据倒叙
	 * 
	 * @param date
	 *            时间,date类型
	 * 
	 * */
	public List<Statistical> list(Date startTime, Date endTime,
			StatisticalType orderType, Integer pid, Integer epid,String productName,
			Integer firstResult, Integer maxResults);

	public Statistical check(Date startTime, Date EndTime, Integer productid,
			Integer oid);

	public Integer getCount(Date startTime, Date endTime,
			StatisticalType orderType, Integer pid, Integer epid);

	public Integer getTotalCount(Date startTime, Date endTime,
			StatisticalType orderType, Integer pid, Integer epid);

	/**
	 * 检查统计中是否存在此产品记录,如果存在则增加,不存在则新建
	 * 
	 * @param productid
	 *            产品id
	 * @param provinceid
	 *            区域id(市级)
	 * @param startTime
	 *            开始时间,今天0点0分开始
	 * @param endTime
	 *            结束时间,今天23点59分结束
	 * */
	public Statistical checkCityRecord(Integer productid, String provinceid,
			Date startTime, Date endTime);

	/**
	 * 查询统计记录
	 * 
	 * @param type
	 *            TongjiAreaType统计地区类型
	 * @param date
	 *            时间
	 * */
	public List<Statistical> list(TongjiAreaType type, Date date,
			Integer provinceid);

	public List<Statistical> listByProduct(Integer productid,
			TongjiAreaType areaType, StatisticalType type, Date date);

	public List<Statistical> listByDate(Date startTime, Date endTime);

	/**
	 * 查询统计记录
	 * 
	 * @param type
	 *            StatisticalType统计类型
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * */
	public List<Statistical> list(Date startTime, Date endTime,
			StatisticalType type);
}
